'''
pymysql 模块
    作用： 连接mysql数据库，数据管理操作
    游标 默认返回结果数据的行数
        提供三个方法 fatchall, fatchone ,fatchmany
        可以获取实际数据 ，返回值为 “元组套元组 “




 安装：
 > pip install pymysql
    默认联网自动安装（国外源）
    配置国内库，上阿里，华为等官网查询


使用流程：
    1.创建数据库
    2.基于连接创建游标
    3.执行SQL语句
    4.关闭游标，关闭数据库
'''

#实例1 读操作
import pymysql

def selectsql():
    # 连接数据库
    connection = pymysql.connect(host="192.168.106.133",
                                 user="admin",
                                 password='WWW.2.com',
                                 database='it',
                                 charset='utf8mb4')

    #2. 创建游标
    cur = connection.cursor()

    #3. 执行操作
    sql = "select * from it.servers;"

    result = cur.execute(sql)
    print("数据的行数%s"%result)
    if result:
        print("有数据")
    else:
        print("无数据")

    #-------获取实际的数据---------------

    data_01 = cur.fetchall()
    print(data_01)
    for user,password,port,ip in data_01:
        print("ssh %s@%s -p %s" %(user,ip,port))

    # data_02 = cur.fetchone()
    # print(data_02)

    # data_03 = cur.fetchmany(3)
    # print(data_03)

    #----------4.1关闭游标------------
    cur.close()
    #----------4.2关闭数据库-----------
    connection.close()

#实例2 写操作
def writesql():
    # 连接数据库
    connection = pymysql.connect(host="192.168.106.133",
                                 user="admin",
                                 password='WWW.2.com',
                                 database='it',
                                 charset='utf8mb4')
    # 创建游标
    cr = connection.cursor()

    #定义写操作
    test_sql_01 ="insert into servers (ip,user,password,port) values ('192.168.106.133','martin','WWW.2.com',22)"

    result = cr.execute(test_sql_01)
    # 提交写操作
    connection.commit()
    print(result)

    # 关闭游标和数据库
    cr.close()
    connection.close()

if __name__ == '__main__':
    selectsql()
